import router from "./router";
// 进度条nprogress
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
// 关闭加载进度条
nprogress.configure({ showSpinner: false });
// 用户仓库
import userStorePinia from "./store/modules/user";
import { message } from 'ant-design-vue';


// 前置守卫
router.beforeEach(async (to, from, next) => {
    // 开始加载进度条
    nprogress.start();
    // 关闭message
    message.destroy()
    // 设置浏览器标题
    document.title = `vue3-${to.meta.title}`
    let userStore = userStorePinia()
    // 判断用户有没有登录
    if (userStore.token) {
        // 前往登录页
        if (to.path == '/login') {
            next('/')
        } else {
            // 还能拿到用户信息
            if (userStore.userName) {
                next()
            } else {
                // 拿不到用户信息
                try {
                    // 重新请求用户信息
                    await userStore.userInfo()
                    next()
                } catch (error) {
                    message.error(error)
                    // 请求失败，退出重新登录
                    userStore.quitUserStore()
                    next({ path: '/login', query: { redirect: to.path } })
                }
            }
        }
    } else {
        // 没有登录,只能前往登录页
        if (to.path == '/login') {
            next()
        } else {
            next({ path: '/login', query: { redirect: to.path } })
        }
    }
})

// 后置守卫
router.afterEach((to, from) => {
    // 关闭进度条
    nprogress.done();

})